﻿#pragma once

#include <ImageTask.h>
#include <stdafx.h>


class TaskManager {
private:
	std::vector<std::unique_ptr<ImageTask>> tasks; // 任务列表
	std::vector<cv::Mat> intermediateResults;      // 中间结果
	cv::Mat originalImage;                         // 原始图像

public:
	// 设置原始图像
	void setOriginalImage(const cv::Mat& img);

	// 添加任务
	void addTask(std::unique_ptr<ImageTask> task);

	void removeTask(int index);

	void insertTask(int index, std::unique_ptr<ImageTask> task);
	// 执行所有任务
	void executeAll();

	// 获取中间结果
	const std::vector<cv::Mat>& getIntermediateResults() const;

	// 获取任务列表
	const std::vector<std::unique_ptr<ImageTask>>& getTasks() const;

	// 获取任务名称列表
	std::vector<std::string> getTaskNames() const;

	// 获取指定步骤的结果
	cv::Mat executeToStep(int step);
};